其他
知乎千万级高性能长连接网关是如何搭建的
点击上方蓝色“程序猿DD”,选择“设为星标”
回复“资源”获取独家整理的学习资料!
可靠性
水平扩展能力
依赖组件成熟度
接入层使用 OpenResty 实现,负责连接负载均衡和会话保持
长连接 Broker,部署在容器中,负责协议解析、认证与鉴权、会话、发布订阅等逻辑
Redis 存储,持久化会话数据
Kafka 消息队列,分发消息给 Broker 或业务方
负载均衡,保证各长连接 Broker 实例上连接数相对均衡
会话保持,单个客户端每次连接到同一个 Broker,用来提供消息传输可靠性保证
分布不够均匀,部分来源 IP 是大型局域网 NAT 出口,上面的连接数多,导致 Broker 上连接数不均衡
不能准确标识客户端,当移动客户端掉线切换网络就可能无法连接回刚才的 Broker 了
减少长连接 Broker 内部状态,让 Broker 可以无压力扩容
知乎内部已平台化,支持水平扩展
使用消息队列削峰,避免突发性的上行或下行消息压垮系统
业务系统中大量使用 Kafka 传输数据,降低与业务方对接成本
消息路由到 Kafka Topic,但不消费,适合数据上报的场景。
消息路由到 Kafka Topic,也被消费,普通的即时通讯场景。
直接从 Kafka Topic 消费并下发,用于纯下发消息的场景。
消息路由到一个 Topic,然后从另一个 Topic 消费,用于消息需要过滤或者预处理的场景。
信不信这29 个阿里开源项目里肯定有你用过的? start.aliyun.com 正式上线! 安利 10 个 Intellij IDEA 实用插件 有了这 4 款工具,老板再也不怕我写烂SQL了 YAML中多行字符串的配置方法总结
扫一扫,关注我
一起学习,一起进步
朕已阅